/*
******************************************************************************************************* 
**  Copyright (C) 2019, 苏州检易生物科技有限公司 
**  All rights reserved. 
** 
**  FileName:       	act.c
**  Description:	
**  Author:        	 
**  Version				v0.1
**  Date:           	2019-08-23
**	Function List： 
**  History:         
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                              	调试开关
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                             INCLUDE FILES
*********************************************************************************************************
*/
#include "act.h"
#include "log_console.h"
#include "os_config.h"
#include "template_list.h"


/*
*********************************************************************************************************
*                                              	宏定义
*********************************************************************************************************
*/
#define		ACT_MEM_SIZE			(768)
/*
*********************************************************************************************************
*                                              	结构体定义
*********************************************************************************************************
*/

 
/*
*********************************************************************************************************
*                                              	函数原型声明
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                              	全局变量定义
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*                                              	模块静态变量定义
*********************************************************************************************************
*/
struct rt_mempool rt_act_mp;
static uint8_t	rt_act_mp_buff[RT_MEMPOOL_BYTE_SIZE(ACT_MEM_SIZE,sizeof(act_t))];
/*
*********************************************************************************************************
*                                              	函数定义
*********************************************************************************************************
*/
act_err_t act_init(void)
{
	if(RT_EOK != rt_mp_init(&rt_act_mp,
		"act msg pool",
		rt_act_mp_buff,
		sizeof(rt_act_mp_buff),
		sizeof(act_t)
		))
	{
		Critical_Log("act mem create failed!\r\n");
		return ACT_ERR_INIT;
	}
	return ACT_ERR_NONE;
}
//act_t* act_malloc(void)
//{
//	act_t * p_act = rt_mp_alloc(&rt_act_mp,RT_WAITING_FOREVER);
//	if(NULL==p_act)
//	{
////		Critical_Log("app msg mem create failed!\r\n");
//		return NULL;
//	}
//	return p_act;
//}


//act_err_t	act_free(act_t* p_act)
//{	
//	rt_mp_free(p_act);
//	return ACT_ERR_NONE;
//}


void act_ticks(void* p_list)
{
	ASSERT(p_list);
	list_t* p_send_list = (list_t* )p_list;
	act_t* p_head;
	act_rlt_t rtn;
	/* 当前队列为空，直接返回 */
	while(p_send_list->head != NULL)
	{
		p_head = (act_t*)(p_send_list->head);
//		p_head = (act_t*)list_pop(p_send_list);
		rtn = p_head->func(p_head);
		if(ACT_RLT_DEL == rtn)
		{
			p_head = (act_t*)list_pop(p_send_list);
			list_free(p_list,(list_node_t*)p_head);
			continue;
		}
		else if(rtn == ACT_RLT_NONE)
		{
			return;
		}
		else if(rtn == ACT_RLT_ERR)
		{
			/*错误 TBD*/
		}
	}
}

